from PyQt5.QtSql import QSqlTableModel
from PyQt5.QtCore import Qt

class ImageModel(QSqlTableModel):
    def __init__(self, parent=None):
        # 调用父类 QSqlTableModel 的构造函数
        super().__init__(parent)

    def data(self, index, role=Qt.DisplayRole):
        # 检查是否请求的数据是用户定义的角色，并且是图片列的数据
        # Qt.UserRole + 1 是一个自定义角色，通常用于存储非标准数据
        # index.column() == 6 表示我们假设图片数据存储在第7列（列索引从0开始）
        if role == Qt.UserRole + 1 and index.column() == 6:
            # 获取指定行记录, record()方法返回一个QSqlRecord对象，包含了当前行的字段数据
            record = self.record(index.row())
            # "照片" 是数据库中存储图片的字段名
            # 使用 value() 方法获取指定字段名的数据
            image_data = record.value("照片")
            # 打印图片数据，确保它不为空
            # print(f"模型获取图片数据: {image_data}")
            # 返回图片数据，这个数据通常是一个 QByteArray 对象，包含了图片的二进制数据
            return image_data
        # 确保所有单元格内容居中
        elif role == Qt.TextAlignmentRole:
            # 返回居中对齐的标志，确保所有单元格内容居中显示
            return Qt.AlignCenter
        # 如果不是请求图片数据，则调用父类的 data 方法处理其他角色
        return super().data(index, role)
